package com.demo.modules.sys.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.demo.common.constant.Constant;
import com.demo.common.utils.CacheUtils;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 组织机构
 */
@Data
@TableName("sys_org")
public class SysOrgEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId
    private Long id;
    /**
     * 上级ID
     */
    private Long pid;

    /**
     * 组织编码
     */
    @NotBlank
    private String orgCode;

    /**
     * 组织名称
     */
    @NotBlank
    private String orgName;

    /**
     * 组织简称
     */
    private String simpleName;

    /**
     * 组织类型
     */
    @NotNull
    private Integer orgType;

    /**
     * 成立日期
     */
    private Date buildTime;

    /**
     * 负责人
     */
    private Long mainUser;

    /**
     * 备注
     */
    private String memo;

    /**
     * 排序
     */
    private Integer orderNum;

    /**
     * 删除标识  0 正常 1 删除
     */
    @TableLogic
    private Integer isDel;

    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long creator;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 编辑人ID
     */
    @TableField(fill = FieldFill.UPDATE)
    private Long modifier;

    /**
     * 编辑时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date modifyTime;

    /**
     * 创建人名称
     */
    @TableField(exist = false)
    private String creatorName;

    /**
     * 编辑人名称
     */
    @TableField(exist = false)
    private String modifierName;


    /**
     * 组织类型名称
     */
    @TableField(exist = false)
    private String orgTypeName;

    /**
     * 负责人名称
     */
    @TableField(exist = false)
    private String mainUserName;

    public String getMainUserName() {
        return CacheUtils.getUserCache(mainUser).getRealName();
    }


    public String getCreatorName() {
        return CacheUtils.getUserCache(creator).getRealName();
    }

    public String getModifierName() {
        return CacheUtils.getUserCache(modifier).getRealName();
    }

    public Integer getIsDel() {
        return isDel == null ? Constant.INT_N : isDel;
    }

    public Long getOrgId() {
        return id;
    }
}
